Typically, a company has a computer system with a certain amount of resources allocated for use by the system. Those resources could, for example, be e-commerce such as Internet, wireless, and the like. As time passes, applications are added to the system and eventually the system requires additional resources. When this happens, a user must manually add more resources to the system.
In this context, resources could be memory, CPUs, disk storage, network capacity, in fact, anything that makes the system more reliable or more robust. Thus, as time passes, the memory is required to hold more and more data, or the CPU must go faster, or a link for a network (such as the Internet) must be larger in capacity or faster in speed.
Currently, in order to add resources, a user must identify the problem and then identify the required resource(s). Then the user would have to turn the machine off, insert more resources into the system and restart the machine. This, of course, requires a certain amount of down time, a high technical skill level and the actual resource(s).
The problem is that most users do not understand when a new resource is necessary, so the upgrade is made only when it becomes an issue and only when it is determined that the problem will be solved by adding more resources to the system. The problem is even more difficult when the trouble comes from a resource that is only needed once in awhile, such as once a day, once a month, or once a year. When the resource is added it then is always available even if the demand time has passed (i.e., a demand for such resource no longer exists) or the demand for such resource is sporadic. For resources that are costly, this is a problem.